怎么用python画省份,区域地图,中国地图

您所在的位置:网站首页 中国省份多少个 地图 怎么用python画省份,区域地图,中国地图

怎么用python画省份,区域地图,中国地图

2024-07-09 13:33| 来源: 网络整理| 查看: 265

由于在最近科研的过程中,需要画各种图,所以就写了一个工具包,专门用来画省份,区域,整个中国的图,废话不多说,先放github链接,长得好看的兄弟记得给我点个赞,下面只是简单的展示几个案例,更详细的使用方法可以看函数注释。安装很简单,把requirements.txt 里的依赖包装上即可。 下面来看看example.py 里面的样例

省份降水图(以四川省为例) def test_plot_roi_image(province='四川省'): dataset = xr.open_dataset(r"example_data/example_data.nc") dataset = dataset.rename({"LON": "lon", "LAT": "lat"}) province_geo = get_province_geometry("shp",province) # 返回省份的轮廓 city_info = get_city_geometries("shp",province) # 返回省会所有的城市信息,为一个字典,键为城市名字,值为城市轮廓 texts = [] # 需要指明那些城市名字 inner_geometries = [] # 需要那些内部轮廓,比如成都市的轮廓 for city_name, city_geo in city_info.items(): inner_geometries.append(city_geo) # 积攒所有的城市轮廓 texts.append((city_name, get_text_position_from_geometry(city_geo))) # 为每个城市添加名称,可以只为关注的城市添加名字 roi = extract_roi_from_xr(dataset, box=province_geo.bounds, size=(128, 128)) # 提取省会所需数据 plot_roi_image(roi.lon.values, roi.lat.values, roi.PRCP.values, ccrs.PlateCarree(), province_geo, inter_geometries=inner_geometries, texts=texts, crop=True,cmap='Greens')

在这里插入图片描述 2. 省份等级图

def test_plot_roi_level(province='四川省'): province_geo = get_province_geometry("shp",province) # 返回省份的轮廓 city_info = get_city_geometries("shp",province) # 返回省会所有的城市信息,为一个字典,键为城市名字,值为城市轮廓 texts = [] inner_geometries = [] values = [] for city_name, city_geo in city_info.items(): inner_geometries.append(city_geo) # 积攒所有的城市轮廓 texts.append((city_name, get_text_position_from_geometry(city_geo))) # 为每个城市添加名称 values.append((get_text_position_from_geometry(city_geo),random.randint(1,4))) # 准备等级数据 level2color = {1: "blue", 2: "yellow", 3: "orange", 4: "red"} level2text = {1: "一般", 2: "较严重", 3: "严重", 4: "特别严重"} lon_min, lat_min, lon_max, lat_max = province_geo.bounds lon_range = [lon_min - 0.5,lon_max + 0.5] lat_range = [lat_min - 0.5,lat_max + 0.5] plot_roi_level(lon_range, lat_range,values,ccrs.PlateCarree(), inner_geometries=inner_geometries, outer_geometries=province_geo, texts=texts, level2color=level2color, level2text=level2text)

在这里插入图片描述

全国等级图 def test_plot_china_level(): china_geo = get_china_geometry("shp") nine_geo = get_nine_geometry("shp") provinces_geo = get_province_geometries("shp") texts = [] values = [] inner_geometries = [] for name, geometry in provinces_geo.items(): values.append([get_text_position_from_geometry(geometry), random.randint(1, 4)]) inner_geometries.append(geometry) texts.append((name, get_text_position_from_geometry(geometry))) // 可以只添加几个省份的名 level2color = {1: "blue", 2: "yellow", 3: "orange", 4: "red"} level2text = {1: "一般", 2: "较严重", 3: "严重", 4: "特别严重"} lon_min, lat_min, lon_max, lat_max = china_geo.bounds lon_range = [lon_min - 0.5,lon_max + 0.5] lat_range = [lat_min - 0.5,lat_max + 0.5] plot_china_level(lon_range, lat_range, values, ccrs.LambertConformal(central_longitude=107.5, central_latitude=36.0, standard_parallels=(25, 47)), inner_geometries=inner_geometries, outer_geometries=china_geo, texts=texts, level2color=level2color, level2text=level2text, nine=nine_geo)

在这里插入图片描述

全国降水图 def test_plot_china_image(): dataset = xr.open_dataset(r"example_data/example_data.nc") dataset = dataset.rename({"LON": "lon", "LAT": "lat"}) province_geo = get_province_geometries("shp") china = get_china_geometry("shp") nine = get_nine_geometry("shp") texts = [] for name, geometry in province_geo.items(): texts.append((name, get_text_position_from_geometry(geometry))) roi = extract_roi_from_xr(dataset, box=china.bounds, size=(512, 512)) plot_china_image(roi.lon.values, roi.lat.values, value=roi.PRCP.values, proj=ccrs.LambertConformal(central_longitude=107.5, central_latitude=36.0, standard_parallels=(25, 47)), outer_geometries=china, nine=nine, texts=texts, bar_label="降水",cmap="BuGn")

局部区域图 代码暂时没找到,如果github超过50个星,我再重新写一个上传。出图效果大概如下 在这里插入图片描述在这里插入图片描述


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3